#ifndef _SELECTMODESCREEN_H_
# define _SELECTMODESCREEN_H_

# include "MyScreenArgs.h"
# include "Utils\IScreen.h"
# include "Utils\Surface.h"
# include "Elements\PushButton.h"

struct SelectModeArgs : public MyScreenArgs
{
public:
	SelectModeArgs(SDL_Surface* _screen, SDL_Event* _event);
	virtual ~SelectModeArgs();
};

class SelectModeScreen : public SDL::UTILS::IScreen
{
private:
	struct CurrentScreen
	{
	public:
		SDL::UTILS::IScreen* Screen;
		MyScreenArgs* Args;
		void (SelectModeScreen::*Finished)();
	} m_currentScreen;
	SDL::UTILS::Surface m_surface;
	SDL::UTILS::ScreenManager m_screens;
	SDL::ELEMENTS::PushButton m_pbGenerator;

public:
	SelectModeScreen();
	virtual ~SelectModeScreen();

	virtual void Draw(SDL::UTILS::IArgs* _args);
	virtual void Exec(SDL::UTILS::IArgs* _args);

	static bool Manage(SDL::UTILS::ScreenManager::Element* _caller, SDL::UTILS::IArgs* _args);

private:
	void InitButtons();

	void On_pbGenerator_Clicked(SDL::UTILS::IArgs* _datas);
};

#endif // _SELECTMODESCREEN_H_
